iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
Software Development

Java入門的30張門票系列 第 13

[Day13] Java 陣列宣告 & 基本使用

  • 分享至 

  • xImage
  •  

陣列Array是什麼勒?它由一群相同資料型態的變數所組成,不一定只能放int或string,物件也可以放。陣列在記憶體中使用連續的記憶體空間,想要找資料就是透過索引值來做存取。
陣列在Java裡是以物件的方式存在,所以本身是一種reference資料型態。它也跟一般物件一樣,在呼叫時也須使用new指令來分配儲存空間,

一維陣列

要注意宣告時就必須指定長度並且之後無法改變
可先不放值:

int x[] = new[3];

也可在宣告時就設值:

int x[] = new[3];
x[0] = 1;
x[1] = 2;
x[2] = 3;

或是

int x[] = {1, 2, 3};

宣告時,中括號可以放在名稱的前面或後面。

int x1[];
int[] x2;
int x3[], y3[];
int[] x4, y4;

取得長度

arrayName.length
如果這種寫法是用在一維陣列的話可以取得的是元素個數,如果是用在二維陣列取得的則是橫列數。另外要注意的是length之後不可以加上小括弧,因為它不是一個method,跟String類別中的length()不一樣,而是陣列中的一個屬性。

int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println(intArray.length);  // 10

取得陣列元素

arrayName[index]
想取得裡面的元素很簡單,由於裡面的元素是有順序性的,所以可以根據索引值來成功拿取,不過索引值是從0開始的,這部分要注意一下。

// 把陣列內數字加總
int[] intArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

int sum = 0;
for (int i = 0; i < intArray.length; i++)
    sum += intArray[i];

System.out.println("sum="+sum);

多維陣列

除了有一維的陣列,Java還有提供多維的陣列。由於一維陣列只能儲存一個種類的資料。如果想使用陣列來儲存多個種類的資料時,就可以用到多維陣列。例如我想儲存班上各學生座號及國文和數學的成績。此時我們就可以使用多維陣列來表示這些資料,程式中可以利用每一維的陣列來各個同學的座號以及成績。

int score[][] = new int[5][3];

也像一維一樣可以宣告時便給值:

int score[][] = {
             {1, 76, 80},
             {2, 80, 65},
             {3, 44, 82},
             {4, 100, 74},
             {5, 78, 76},
             };

如果想把多維陣列裡所有數值加總則是要用到巢狀迴圈的方式,也就是迴圈內還有一個迴圈,這用這種方法一行一行的加總。

// 把陣列內數字加總
int[][] intArray = {
                   { 1, 2, 3, 4, 5},
                   { 6, 7, 8, 9, 10 }
		           };
int sum = 0;
for(int i = 0; i < intArray.length; i++) {
		for(int j = 0; j < intArray[i].length; j++)  // 該行的長度
				sum += intArray[i][j];
}   
System.out.println("sum="+sum);

Java除了提供這種方方正正的陣列,其實還有一種是非矩形陣列,也就是每一行的元素個數不一致,不要看它醜醜的,這種不規則的陣列宣告語法也是一種合法的宣告方式。

int xx[][] = new int[3][];
xx[0] = new int[2];
xx[1] = new int[3];
xx[2] = new int[4];

好了今天就簡單介紹Array到這裡,明天會再介紹幾個常用在陣列裡的方法/images/emoticon/emoticon35.gif


上一篇
[Day12] 什麼是建構子
下一篇
[Day14] Java進階陣列操作
系列文
Java入門的30張門票30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言